OS. ExcelでのOpenSTAADマクロの記述
この例では、VBAでOpenSTAADマクロを記述するために必要ないくつかの概念を紹介します。
OS. VBAでのOpenSTAADのインスタンス化
この一連の手順では、OpenSTAADをインスタンス化し、スプレッドシートマクロで開いているSTAAD.Proモデルから情報を取得します。
これは、コード内からOpenSTAAD APIにアクセスするために必要です。VBAでは、これは2つの部分からなる処理です。最初に対象をオブジェクトとして宣言し、次にそのオブジェクトをOpenSTAADで指示します。
-
サブルーチン内で「Dim objOpenSTAAD As Object」と入力します。
"Object"という語の入力を開始すると、関連する用語を含む小さなリストが開きます。これはインテリセンスと呼ばれるもので、コード行をすばやく正確に入力するのに役立ちます。
- <Enter>キーを押します。
- 「Set objOpenSTAAD = GetObject(,StaadPro.OpenSTAAD)」と入力します。 これにより、手順1で定義した変数にOpenSTAADアプリケーションオブジェクトが割り当てられます。
- <Enter>キーを押します。
OS. スプレッドシートでのgeometry関数の使用
-
「Sheet1.[A1].Value = "Nodes:"」と入力し、<Enter>キーを押します。
"Hello World"の例と同様に、これは単にテキスト文字列をセルに取り込みます。ここでは、データのラベルを指定すると便利です。
-
「Sheet1.[B1].Value = objOpenSTAAD.Geometry.GetNodeCount」と入力し、<Enter>キーを押します。
ここでは、OpenSTAADオブジェクト内のGeometryクラスにあるGetNodeCount関数の戻り値にセルの値を割り当てています。
この方法では、objOpenSTAADオブジェクト内のGetNodeCount関数に直接アクセスします。
- 「Dim objGeometry As OSGeometryUI」と入力し、<Enter>キーを押します。 VBAエディタをSTAADに接続している場合は、OSGeometryUIの入力を開始するとオートコンプリートが始まります。<Tab>キーを押すと、オートコンプリートのポップアップリストでハイライトされた結果を受け入れ、そのエントリの末尾に移動することができます。
- 「Set geometry = objOpensTAAD.geometry」と入力し、<Enter>キーを押します。 これにより、オブジェクトのジオメトリがOpenSTAADオブジェクト内のgeometryクラスに割り当てられます。
- 「Sheet1.[A2].Value = "Members:"」と入力し、<Enter>キーを押します。
- 「Sheet1.[B2].Value = geometry.GetMemberCount」と入力し、<Enter>キーを押します。 ここで、「geometry.」まで入力するとオートコンプリートのメニューが再び開き、OpenSTAADのgeometryクラス内のすべての関数とメソッドが表示されます。これは、最初にオブジェクトをそのクラスに設定したからです。
- マクロを実行します。 現在開いているSTAAD.Proモデル内のノードとメンバーの数がスプレッドシートに取り込まれます。
完成したコードは次のようになります。
Sub OpenSTAADTutorial()
Dim objOpenSTAAD As Object
Dim stdFile As String
Set objOpenSTAAD = GetObject(, "StaadPro.OpenSTAAD")
Sheet1.[A1].Value = "Nodes:"
Sheet1.[B1].Value = objOpenSTAAD.geometry.GetNodeCount
Dim geometry As OSGeometryUI
Set geometry = objOpenSTAAD.geometry
Sheet1.[A2].Value = "Members:"
Sheet1.[B2].Value = geometry.GetMemberCount
End Sub
OS. スプレッドシート内からのマクロの実行
マクロをアクティブにするためのボタンやその他の対話型ツールをスプレッドシートに追加するには、次の手順に従います。
マクロを実行するたびにVBAウィンドウを開く必要があるようでは、使いやすいとは言えません。より使いやすいスプレッドシートにするために、マクロ機能にアクセスするためのコントロールをスプレッドシートに追加することができます。
- スプレッドシートで、「開発」リボンタブの「コントロール」グループから の順に選択します。 マウスポインタが十字カーソルに変わります。
-
スプレッドシート内の任意の場所をクリックして長方形にドラッグします。
これがボタンのサイズと形状になるので、2x2のスプレッドシートのセルより少し小さいくらいにすると使いやすいものになります。
「マクロの登録」ダイアログが開きます。 - 「マクロ名」のリストからサブルーチンの名前を選択し、「OK」をクリックします。 これにより、このサブルーチンを実行するボタンクリック操作が割り当てられます。
- スプレッドシートで新しいボタン(「ボタン1」)をクリックします。 マクロが実行され、スプレッドシートにノード数とメンバー数が取り込まれます。
- ボタンを右クリックして「テキストの編集」を選択し、ボタンのラベルをわかりやすいものに変更します。 ボタンの外の任意の場所をクリックして、テキスト編集状態を終了します。